const path = require("path")
// 自动生成html
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: "./src/main.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
      filename: "bundle.js" ,// 出口文件名
      clean: true, // 打包前清空文件夹
  },
  plugins: [
    new HtmlWebpackPlugin({
      // 设置目标模板的路径
      template: './public/index.html',
      // 设置输出文件名
      filename: 'index.html'
    })
  ],
  module: {
    rules: [
      {
        // 匹配所有的css文件,别忘了在入口引入css文件
        test: /\.css$/i,
        // 执行顺序： 从右到左
        // css-loader 读取css文件并打包
        // style-loader 将css插入dom中
        use: ["style-loader", "css-loader"],
      },
      {
        // 匹配所有的less文件,别忘了在入口引入less文件
        test: /\.less$/i,
        use: [
          'style-loader',
          'css-loader',
          'less-loader',
        ],
      },
      {
        // 加载图片
        // asset  8kb以下图片转换成base64字符串减少http请求
        // 8kb以上图片打包到目录下
        test: /\.(png|svg|jpg|jpeg|gif)$/i,
        type: 'asset',
      },
      {
        // 字体图标
        test: /\.(woff|woff2|eot|ttf|otf|svg)$/i,
        type: 'asset/resource',
        // generator 打包生成新的文件夹名为fonts
        // name为每项原文件名
        // hash是每个文件的唯一值，后面的数字代表位数
        // ext是文件扩展名
        generator: {
          filename:'fonts/[name].[hash:6][ext]'
        }
      },
    ],
  },
}